<?php
class ords extends Controller {

	function ords(){
		parent::Controller();
		$this->load->library('rapyd');
		//$this->datasis->modulo_id(302,1);
		$this->back_dataedit='compras/ords/filteredgrid';
	}

	function index(){
		redirect('compras/ords/filteredgrid');
	}

	function filteredgrid(){
		$this->rapyd->load('datagrid','datafilter');

		$atts = array(
              'width'      => '800',
              'height'     => '600',
              'scrollbars' => 'yes',
              'status'     => 'yes',
              'resizable'  => 'yes',
              'screenx'    => '0',
              'screeny'    => '0'
              );

        $modbus=array(
			'tabla'   =>'sprv',
			'columnas'=>array(
				'proveed' =>'C&oacute;digo Proveedor',
				'nombre'=>'Nombre',
				'rif'=>'RIF'),
			'filtro'  =>array('proveed'=>'C&oacute;digo Proveedor','nombre'=>'Nombre'),
			'retornar'=>array('proveed'=>'proveed'),
			'titulo'  =>'Buscar Proveedor');

		$boton=$this->datasis->modbus($modbus);

		$filter = new DataFilter('B&uacute;squeda de Solicitud de Ofertas','ords');

		$filter->fechad = new dateonlyField("Desde", "fechad",'d/m/Y');
		$filter->fechah = new dateonlyField("Hasta", "fechah",'d/m/Y');
		$filter->fechad->clause  =$filter->fechah->clause="where";
		$filter->fechad->db_name =$filter->fechah->db_name="fecha";
		$filter->fechad->insertValue = date("Y-m-d");
		$filter->fechah->insertValue = date("Y-m-d");
		$filter->fechah->size=$filter->fechad->size=10;
		$filter->fechad->operator='>=';
		$filter->fechah->operator='<=';

		$filter->numero = new inputField('N&uacute;mero', 'numero');
		$filter->numero->size=20;

		$filter->proveedor = new inputField('Proveedor', 'proveed');
		$filter->proveedor->append($boton);
		$filter->proveedor->db_name = 'proveed';
		$filter->proveedor->size=20;

		$filter->buttons('reset','search');
		$filter->build('dataformfiltro');

		$uri   = anchor('compras/ords/dataedit/show/<#numero#>','<#numero#>');
		$uri_2  = anchor_popup('formatos/ver/ords/logo/<#numero#>',img(array('src'=>'images/pdf_logo.gif','border'=>'0','alt'=>'Ver Html','height'=>'15','title'=>'Ver Html')),$atts);
		$uri_2 .= anchor_popup("formatos/verhtml/ords/logo/<#numero#>",img(array('src'=>'images/html_icon.gif','border'=>'0','alt'=>'Ver Pdf','height'=>'15','title'=>'Ver Pdf')),$atts);


		$grid = new DataGrid();
		$grid->order_by('numero','desc');
		$grid->per_page = 15;

		$grid->column('Acci&oacute;n',$uri_2,'align=center');
		$grid->column_orderby('N&uacute;mero',$uri,'numero');
		$grid->column_orderby('Fecha'        ,'<dbdate_to_human><#fecha#></dbdate_to_human>'   ,'fecha' ,"align='center'");
		$grid->column_orderby('Nombre'       ,'nombre'   ,'nombre');
		//$grid->column_orderby('Monto Total'  ,'montotot' ,'montotot' ,"align='right'");
		//$grid->column_orderby('Estatus'       ,'status'   ,'status');
		//$grid->column("Vista",$uri2,"align='center'");
		$grid->add('compras/ords/dataedit/create','Nueva Oferta');
		$grid->build('datagridST');

//************ SUPER TABLE ************* 
		$extras = '
<script type="text/javascript">
//<![CDATA[
(function() {
	var mySt = new superTable("demoTable", {
	cssSkin : "sSky",
	fixedCols : 1,
	headerRows : 1,
	onStart : function () {	this.start = new Date();},
	onFinish : function () {document.getElementById("testDiv").innerHTML += "Finished...<br>" + ((new Date()) - this.start) + "ms.<br>";}
	});
})();
//]]>
</script>
';
		$style ='
<style type="text/css">
.fakeContainer { /* The parent container */
    margin: 5px;
    padding: 0px;
    border: none;
    width: 850px; /* Required to set */
    height: 320px; /* Required to set */
    overflow: hidden; /* Required to set */
}
</style>
';
//****************************************

		$data['style']   = $style;
		$data['style']  .= style('superTables.css');
		$data['extras']  = $extras;

		$data['content'] = $grid->output;
		$data['filtro']  = $filter->output;

		$data['head']    = script('jquery.js').script('superTables.js'). $this->rapyd->get_head();
		$data['title']   ='<h1>Orden de Compras</h1>';
		$this->load->view('view_ventanas', $data);
	}
	function dataedit(){
		$this->rapyd->load('dataobject','datadetails');
		
		
		$modbus=array(
			'tabla'   =>'sprv',
			'columnas'=>array(
				'proveed' =>'C&oacute;digo Proveedor',
				'nombre'=>'Nombre',
				'rif'=>'Rif'),
			'filtro'  =>array('proveed'=>'C&oacute;digo Proveedor','nombre'=>'Nombre'),
			'retornar'=>array('proveed'=>'proveed','nombre'=>'nombre','rif'=>'rifci'),
			'titulo'  =>'Buscar Proveedor');

		$boton=$this->datasis->modbus($modbus);
		
		
		$modbus=array(
			'tabla'   =>'sinv',
			'columnas'=>array(
				'codigo' =>'C&oacute;digo',
				'descrip'=>'Descripci&oacute;n',
				'precio1' =>'Precio 1',
				'precio2' =>'Precio 2',
				'precio3' =>'Precio 3',
				'existen' =>'Existencia',
				'peso'=>'Peso'),
			'filtro'  =>array('codigo' =>'C&oacute;digo','descrip'=>'Descripci&oacute;n'),
			'retornar'=>array('codigo'=>'codigo_<#i#>','descrip'=>'descrip_<#i#>'),
			'where'   =>'activo = "S" AND tipo="Articulo"',
			'p_uri'=>array(4=>'<#i#>'),
			'titulo'  =>'Busqueda de producto en inventario');
		$btn=$this->datasis->p_modbus($modbus,'<#i#>');
		
		$script="
		function post_add_itords(id){
			$('#cantidad_'+id).numeric(".");
			return true;
		}";

		$do = new DataObject('ords');
		$do->rel_one_to_many('itords', 'itords', 'numero');
		//$do->rel_pointer('itords','sinv','itords.codigo=sinv.codigo','sinv.descrip as sinvdescrip');

		$edit = new DataDetails("Transferencia", $do);
		$edit->back_url = $this->back_dataedit;
		$edit->set_rel_title('itords','Producto <#o#>');

		$edit->script($script,'create');
		$edit->script($script,'modify');
		
		$edit->pre_process('insert','_pre_insert');
		//$edit->pre_process('update','_pre_update');
		$edit->pre_process('delete','_pre_delete');
		$edit->post_process('insert','_post_insert');

		$edit->numero= new inputField('N&uacute;mero', 'numero');
		$edit->numero->mode="autohide";
		$edit->numero->size=10;
		$edit->numero->apply_rules=false; //necesario cuando el campo es clave y no se pide al usuario
		$edit->numero->when=array('show','modify');

		$edit->fecha = new  dateonlyField("Fecha",  "fecha");
		$edit->fecha->rule='required|chfecha';
		$edit->fecha->insertValue = date("Y-m-d");  
		$edit->fecha->size =12;

		$edit->fecha = new DateonlyField('Fecha', 'fecha','d/m/Y');
		$edit->fecha->insertValue = date('Y-m-d');
		$edit->fecha->rule = 'required';
		$edit->fecha->mode = 'autohide';
		$edit->fecha->size = 10;

		$edit->numero = new inputField('N&uacute;mero', 'numero');
		$edit->numero->size = 10;
		$edit->numero->mode='autohide';
		$edit->numero->maxlength=8;
		$edit->numero->apply_rules=false; //necesario cuando el campo es clave y no se pide al usuario
		$edit->numero->when=array('show','modify');

		$edit->proveed = new inputField('Proveedor','proveed');
		$edit->proveed->size = 6;
		$edit->proveed->maxlength=5;
		$edit->proveed->append($boton);
		$edit->proveed->readonly  = true;

		$edit->nombre = new inputField('Nombre', 'nombre');
		$edit->nombre->size = 61;
		$edit->nombre->maxlength=100;
		$edit->nombre->autocomplete=false;
		$edit->nombre->rule= 'required';
		$edit->nombre->readonly  = true;
		
		$tipo=$this->datasis->traevalor('TIPO');	
		$edit->rifci   = new inputField("$tipo",'rifci');
		$edit->rifci->autocomplete=false;
		$edit->rifci->size = 35;
		$edit->rifci->readonly  = true;
		
		$edit->observ1 = new inputField('Observaci&oacute;n','observ1');
		$edit->observ1->rule='max_length[60]|trim';
		$edit->observ1->size =32;
		$edit->observ1->maxlength =30;

		//comienza el detalle
		$edit->codigo = new inputField('C&oacute;digo <#o#>', 'codigo_<#i#>');
		$edit->codigo->db_name='codigo';
		$edit->codigo->append($btn);
		$edit->codigo->rule = 'trim|required';
		$edit->codigo->rel_id='itords';
		$edit->codigo->readonly=true;
		$edit->codigo->maxlength=15;
		$edit->codigo->size     =15;

		$edit->descrip = new inputField('Descripci&oacute;n', 'descrip_<#i#>');
		$edit->descrip->db_name='descrip';
		$edit->descrip->rel_id='itords';
		$edit->descrip->maxlength=45;
		$edit->descrip->size     =60;

		$edit->cantidad = new inputField('Cantidad', 'cantidad_<#i#>');
		$edit->cantidad->db_name  ='cantidad';
		$edit->cantidad->css_class='inputnum';
		$edit->cantidad->rel_id   ='itords';
		$edit->cantidad->rule     ='numeric|mayorcero|required';
		$edit->cantidad->maxlength=10;
		$edit->cantidad->autocomplete=false;
		$edit->cantidad->size     =10;
		//Fin del detalle
		
		$edit->condi1 = new inputField('Condiciones', 'condi1');
		$edit->condi1->size =60;
		$edit->condi1->maxlength=70;
		$edit->condi1->autocomplete=false;

		$edit->condi2 = new inputField('Condiciones', 'condi2');
		$edit->condi2->size = 60;
		$edit->condi2->maxlength=70;
		$edit->condi2->autocomplete=false;
		
		$edit->condi3 = new inputField('Condiciones', 'condi3');
		$edit->condi3->size = 60;
		$edit->condi3->maxlength=70;
		$edit->condi3->autocomplete=false;
		
		$edit->condi4 = new inputField('Condiciones', 'condi4');
		$edit->condi4->size = 60;
		$edit->condi4->maxlength=70;
		$edit->condi4->autocomplete=false;
		
		$edit->paiso = new inputField('Puerto Origen', 'paiso');
		$edit->paiso->size =60;
		$edit->paiso->maxlength=100;  
		$edit->paiso->rule = "strtoupper";
		
		$edit->puerto = new inputField('Puerto Destino', 'puerto');
		$edit->puerto->size =60;
		$edit->puerto->maxlength=100;
		$edit->puerto->rule = "strtoupper"; 
		
		$edit->arancel = new inputField('Arancel', 'arancel');
		$edit->arancel->size =60;
		$edit->arancel->maxlength=100;
				
		$edit->termino = new inputField('Termino', 'termino');
		$edit->termino->size =60;
		$edit->termino->maxlength=100;
		$edit->termino->rule = "strtoupper";

		$edit->estampa = new autoUpdateField('estampa' ,date('Ymd'), date('Ymd'));
		$edit->hora    = new autoUpdateField('hora',date('H:i:s'), date('H:i:s'));
		$edit->usuario = new autoUpdateField('usuario',$this->session->userdata('usuario'),$this->session->userdata('usuario'));

		$edit->buttons('save', 'undo','modify','back','add_rel'); 
		$edit->build();
		$conten['form']  =&  $edit;
		$data['content'] =  $this->load->view('view_ords', $conten,true);
		$data['title']   =  heading('Solicitud de Oferta');
		$data['head']    =  script('jquery.js').script('jquery-ui.js').script("plugins/jquery.numeric.pack.js").script('plugins/jquery.meiomask.js').style('vino/jquery-ui.css').$this->rapyd->get_head();
		$this->load->view('view_ventanas', $data); 
	}

	function chrecibe($recibe){
		$envia=$this->input->post('envia');
		if($recibe!=$envia){
			return true;
		}
		$this->validation->set_message('chrecibe',"El almac&eacute;n que env&iacute;a no puede ser igual a que recibe");
		return false;
	}

	function _pre_insert($do){
		$numero=$this->datasis->fprox_numero('nords');
		$do->set('numero',$numero);
		$transac = $this->datasis->fprox_numero('ntransa');
		$do->set('transac', $transac);

		$cana = $do->count_rel('itords'); $error=0;
		for($i = 0;$i < $cana;$i++){
			$itcodigo  = $do->get_rel('itords', 'codigo'  ,$i);
			$dbitcodigo=$this->db->escape($itcodigo);
			$sinvrow=$this->datasis->damerow('SELECT iva,precio1,precio2,precio3,precio4, ultimo FROM sinv WHERE codigo='.$dbitcodigo);

			$do->set_rel('itords', 'precio1',  $sinvrow['precio1'], $i);
			$do->set_rel('itords', 'precio2',  $sinvrow['precio2'], $i);
			$do->set_rel('itords', 'precio3',  $sinvrow['precio3'], $i);
			$do->set_rel('itords', 'precio4',  $sinvrow['precio4'], $i);
			$do->set_rel('itords', 'iva'    ,  $sinvrow['iva']    , $i);
			$do->set_rel('itords', 'costo'  ,  $sinvrow['ultimo'] , $i);
		}
		return true;
	}

	function _post_insert($do){
		$envia   = $do->get('envia');
		$recibe  = $do->get('recibe');
		$dbenvia = $this->db->escape($envia);
		$dbrecibe= $this->db->escape($recibe);

		$cana = $do->count_rel('itords'); $error=0;
		for($i = 0;$i < $cana;$i++){
			$itcana    = floatval($do->get_rel('itords', 'cantidad',$i));
			$itcodigo  = $do->get_rel('itords', 'codigo'  ,$i);
			$dbitcodigo=$this->db->escape($itcodigo);

			//$mSQL="INSERT INTO itsinv (codigo,alma,existen) VALUES (${dbitcodigo},${dbenvia},-$itcana) ON DUPLICATE KEY UPDATE existen=existen-${itcana}";
			//$ban=$this->db->simple_query($mSQL);
			//if(!$ban){ memowrite($mSQL,'ords'); $error++;}

			//$mSQL="INSERT INTO itsinv (codigo,alma,existen) VALUES (${dbitcodigo},${dbrecibe},$itcana) ON DUPLICATE KEY UPDATE existen=existen+${itcana}";
			//$ban=$this->db->simple_query($mSQL);
			//if(!$ban){ memowrite($mSQL,'ords'); $error++;}
		}

		$codigo=$do->get('numero');
		logusu('ords',"TRANSFERENCIA $codigo CREADO");
		return true;
	}

	function _pre_update($do){
		return false;
	}

	function _pre_delete($do){
		return false;
	}
}